home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO020.dsk / PT.1.bas < prev    next >
BASIC Source File  |  2012-02-16  |  49KB  |  684 lines

  1. 0 P0 =  PEEK(1010):P1 =  PEEK(1011):P2 =  PEEK(1012): POKE 1012,0
  2. 2  ONERR  GOTO 62000
  3. 10 D$ =  CHR$(4):R$ =  CHR$(13):E$ =  CHR$(27):I$ =  CHR$(34)
  4. 99  GOTO 4000
  5. 400  REM 
  6. 410 Z8$ = "":CH =  PEEK(36):CV =  PEEK(37)
  7. 420  GET Z7$: IF Z7$ =  CHR$(13)  AND Z8$ < >""  THEN  RETURN 
  8. 431  IF Z7$ =  CHR$(13)  THEN 420
  9. 435  PRINT Z7$;
  10. 440  IF Z7$ > = "0"  AND Z7$ < = "9"  THEN  LET Z8$ = Z8$ +Z7$: GOTO 420
  11. 450  POKE 36,CH: POKE 37,CV: CALL  -958: FLASH : PRINT "NO !";: FOR I = 1 TO 2000: NEXT I: NORMAL : POKE 36,CH: POKE 37,CV: CALL  -958: GOTO 410
  12. 500  REM 
  13. 505  INVERSE : PRINT "PROGRAM - HOURLY PAY": NORMAL : PRINT "10 READ H": PRINT "20 READ R": PRINT "30 LET P=H*R": PRINT "40 PRINT " CHR$(34)"PAY EQUALS " CHR$(34)";P": PRINT "50 DATA 40": PRINT "60 DATA 5": PRINT "70 END": RETURN 
  14. 600  REM  
  15. 605  INVERSE : PRINT "PROGRAM - HOURLY PAY - EXPANDED": NORMAL : PRINT "10 READ H": PRINT "20 READ R": PRINT "30 LET P=H*R": PRINT "40 PRINT " CHR$(34)"PAY EQUALS " CHR$(34)";P": PRINT "45 GOTO 10": PRINT "50 DATA 40": PRINT "60 DATA 5": PRINT "65 DATA 50,4,44,6,40,4": PRINT "70 END": RETURN 
  16. 700  REM 
  17. 705  INVERSE : PRINT "PROGRAM - HOURLY PAY - FURTHER EXPANDED": NORMAL : PRINT "10 READ H": PRINT "15 IF H = -1 THEN 70": PRINT "20 READ R": PRINT "30 LET P=H*R": PRINT "40 PRINT "I$"PAY EQUALS "I$";P": PRINT "45 GOTO 10": PRINT "50 DATA 40"
  18. 706  PRINT "60 DATA 5": PRINT "65 DATA 50,4,44,6,40,4": PRINT "66 DATA -1": PRINT "70 END": RETURN 
  19. 800  REM 
  20. 803  PRINT  TAB( 3);: INVERSE : PRINT "PROGRAM - HOURLY PAY - INTERACTIVE": NORMAL : PRINT "5 PRINT "I$"ENTER -1 TO TERMINATE PROGRAM"I$
  21. 810  PRINT "10 INPUT "I$"ENTER HOURS "I$";H": PRINT "15 IF H = -1 THEN 70": PRINT "20 INPUT "I$"ENTER RATE "I$";R"
  22. 830  PRINT "30 LET P=H*R": PRINT "40 PRINT "I$"PAY EQUALS "I$";P": PRINT "41 PRINT": PRINT "45 GOTO 10": PRINT "70 END": RETURN 
  23. 900  REM 
  24. 910  VTAB 24: INVERSE : PRINT "  'ESC' FOR MENU, 'RETURN' TO CONTINUE "; CHR$(7);
  25. 920  IF  PEEK( -16384) <127  THEN 920
  26. 925  GET Z9$: IF Z9$ = E$  THEN  RETURN 
  27. 927  IF Z9$ < >R$  THEN 920
  28. 930  NORMAL : HOME : RETURN 
  29. 4000  REM 
  30. 4010  TEXT : HOME : NORMAL 
  31. 4020  PRINT  TAB( 8);: INVERSE : PRINT "MENU FOR BASIC TUTORIAL": NORMAL : PRINT 
  32. 4030  PRINT "1.INTRODUCTION TO COMPUTERS"
  33. 4035  PRINT "2.BEGINNING BASIC"
  34. 4040  PRINT "3.READ/DATA/LET/PRINT"
  35. 4045  PRINT "4.ENTRY/LIST/RUN/SAVE"
  36. 4050  PRINT "5.ARITHMETIC OPERATORS"
  37. 4055  PRINT "6.BRANCHING/LOOPING"
  38. 4060  PRINT "7.CONDITIONAL BRANCHING"; TAB( 30);"<= PART 1"
  39. 4065  PRINT "8.RELATIONAL OPERATORS"
  40. 4070  PRINT "9.INTERACTIVE PROGRAMMING"
  41. 4075  PRINT "10.REM/STOP/RESTORE"
  42. 4080  PRINT "11.PRINT CONTINUED"
  43. 4085  PRINT "12.MATH.FUNCTIONS/ROUNDING"
  44. 4089  INVERSE 
  45. 4090  PRINT "13.COUNTERS & ACCUMULATORS"
  46. 4095  PRINT "14.FOR-NEXT LOOP"
  47. 4100  PRINT "15.ON-GOTO/GOSUB-RETURN"
  48. 4105  PRINT "16.VARIABLES"
  49. 4110  PRINT "17.ARRAYS & DIM";: NORMAL : PRINT  TAB( 30);: INVERSE : PRINT "<= PART 2"
  50. 4115  PRINT "18.STRINGS & FUNCTIONS"
  51. 4120  PRINT "19.THE GET STATEMENT"
  52. 4130  NORMAL : PRINT "20.MAIN MENU (PART 2 / FINISH / ETC)"
  53. 4140  PRINT  CHR$(7); CHR$(7)
  54. 4150  INVERSE : PRINT "CHOICE(PART 1-NOS.1-12 / 20 ONLY):";: NORMAL : PRINT " ";: GOSUB 400
  55. 4160 N =  VAL(Z8$): IF N <1  OR N >20  THEN  HTAB 1: CALL  -958: GOTO 4150
  56. 4170  IF N = 20  THEN 63000
  57. 4180  ON N GOSUB 4500,5500,6000,6800,6600,7200,7600,8000,8200,8600,9100,9500
  58. 4190  GOTO 4000
  59. 4500  REM 
  60. 4510  TEXT : HOME 
  61. 4520  INVERSE : PRINT "BASIC TUTORIAL:INTRODUCTION TO COMPUTERS";: NORMAL : POKE 34,1: HOME : VTAB 10
  62. 4529  INVERSE : PRINT "DEFINITION:-";: NORMAL 
  63. 4530  PRINT " A COMPUTER IS A BOX OF     ELECTRONICS, A DEVICE WHICH IS CAPABLE  OF STORING BOTH A SET OF INSTRUCTIONS   AND A SET OF DATA IN ITS MEMORY, AND    THEN CARRYING OUT THOSE INSTRUCTIONS IN LOGICAL ORDER."
  64. 4535  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  65. 4536  VTAB 10
  66. 4540  PRINT "A COMPUTER MAY BE COMPARED WITH A NEW   WAGES CLERK. THE WAGES CLERK HAS ";: INVERSE : PRINT "INPUT";: NORMAL : PRINT "  TO HIM/HER A SET OF INSTRUCTIONS AND A  SET OF DATA TO OPERATE ON.THE CLERK WILLTHEN ";
  67. 4541  INVERSE : PRINT "PROCESS";: NORMAL : PRINT " THE DATA ACCORDING TO THE  SET OF PRE-DEFINED INSTRUCTIONS. HE WILLTHEN PRODUCE RESULTS OR ";: INVERSE : PRINT "OUTPUT";: NORMAL 
  68. 4542  PRINT ". HE IS   PERFORMING A 'DATA PROCESSING' FUNCTION,ALBEIT MANUALLY."
  69. 4545  PRINT 
  70. 4560  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  71. 4565  VTAB 10
  72. 4570  PRINT "JUST AS WITH THE WAGES CLERK, THE       COMPUTER HAS ";: INVERSE : PRINT "INPUT";: NORMAL : PRINT " TO IT A SET OF       INSTRUCTIONS (A PROGRAM) AND A SET OF   DATA TO OPERATE ON.";
  73. 4571  PRINT " IT WILL THEN"
  74. 4572  INVERSE : PRINT "PROCESS";: NORMAL : PRINT " THE DATA ACCORDING TO THE SET OFINSTRUCTIONS, PRODUCING A SET OF RESULTSOR ";: INVERSE : PRINT "OUTPUT";: NORMAL : PRINT ". THE COMPUTER IS PERFORMING A'DATA PROCESSING' FUNCTION AUTOMATICALLY."
  75. 4580  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  76. 4585  PRINT : PRINT 
  77. 4590  PRINT "THUS THERE ARE THREE MAIN ";: INVERSE : PRINT "FUNCTIONS";: NORMAL : PRINT " OF ACOMPUTER SYSTEM, AS ILLUSTRATED BELOW:"
  78. 4595  PRINT : VTAB 10
  79. 4599  PRINT  TAB( 2);
  80. 4600  INVERSE : PRINT "INPUT";: NORMAL 
  81. 4604  PRINT  TAB( 7);"   =>    ";
  82. 4605  PRINT  TAB( 14);
  83. 4610  INVERSE : PRINT "PROCESS";: NORMAL 
  84. 4614  PRINT  TAB( 27);"=>";
  85. 4615  PRINT  TAB( 33);
  86. 4620  INVERSE : PRINT "OUTPUT": NORMAL 
  87. 4630  PRINT : PRINT 
  88. 4640  PRINT "PROGRAM       ARITHMETIC        RESULTS"
  89. 4645  PRINT 
  90. 4650  PRINT "   &          & LOGICAL"
  91. 4655  PRINT 
  92. 4660  PRINT " DATA         OPERATIONS"
  93. 4670  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  94. 4675  PRINT 
  95. 4680  PRINT "THESE THREE FUNCTIONS ARE OFTEN SAID TO BE CARRIED OUT BY THREE UNITS, I.E.": PRINT : INVERSE : PRINT "INPUT UNIT": PRINT : PRINT "CENTRAL PROCESSING UNIT (CPU)": PRINT : PRINT "OUTPUT UNIT": PRINT 
  96. 4689  NORMAL : PRINT 
  97. 4690  PRINT "THE PHYSICAL 'DEVICES' CORRESPONDING TO THESE 'UNITS' MAY ALL BE HOUSED IN ONE  CABINET, OR IN SEPARATE CABINETS. THE   KEYBOARD AT WHICH YOU ARE SITTING ACTS  AS AN ";: INVERSE : PRINT "INPUT";: NORMAL : PRINT " DEVICE.";
  98. 4700  PRINT " THE SCREEN ACTS AS  AN ";: INVERSE : PRINT "OUTPUT";: NORMAL : PRINT " DEVICE. THE ";: INVERSE : PRINT "PROCESSING";: NORMAL : PRINT " IS DONEUNDERNEATH THE COVER."
  99. 4701  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  100. 4705  PRINT : PRINT 
  101. 4710  PRINT "AMONG OTHER THINGS YOU WILL FIND THE    FOLLOWING UNDER THE COVER:"
  102. 4715  PRINT 
  103. 4720  INVERSE : PRINT "MEMORY";: NORMAL : PRINT "(STORE)"
  104. 4730  PRINT "SOME MEMORY IS NEEDED TO STORE THE      USER'S PROGRAM AND DATA. THESE LATTER   ARE LOST WHEN COMPUTER IS SWITCHED OFF, UNLESS PREVIOUSLY STORED ON SOME OTHER  MEDIUM."
  105. 4735  PRINT 
  106. 4740  PRINT "(MICRO)";: INVERSE : PRINT "PROCESSOR": NORMAL 
  107. 4750  PRINT "THIS DOES ALL THE ADDING,SUBTRACTING,   MULTIPLYING, COMPARING, ETC."
  108. 4755  PRINT 
  109. 4760  INVERSE : PRINT "CONTROL UNIT": NORMAL 
  110. 4770  PRINT "THIS KEEPS OVERALL CONTROL OF THE       COMPUTER SYSTEM, FLOW OF DATA AND       PROGRAM, ETC."
  111. 4780  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  112. 4789  PRINT : PRINT 
  113. 4790  PRINT "THERE ARE MANY OTHER WAYS OF PROVIDING  INPUT FOR THE COMPUTER, AND RECEIVING   OUTPUT FROM THE COMPUTER. DISK DRIVES   AND CASSETTE DRIVES ARE COMMONLY LINKED TO MICROCOMPUTERS BOTH FOR INPUT AND    OUTPUT. FLOPPY DISKS AND ";
  114. 4800  PRINT "CASSETTES      ARE NEEDED AS 'MEDIA' FOR STORING DATA  AND PROGRAMS."
  115. 4810  PRINT : PRINT 
  116. 4820  PRINT "ANOTHER COMMON DEVICE TO BE LINKED TO A COMPUTER IS A PRINTER FOR 'HARD COPY'   OUTPUT WHICH THE USER MAY TAKE AWAY WITHHIM. IF A PRINTER HAS A KEYBOARD IT MAY ALSO BE USED AS AN INPUT DEVICE."
  117. 4830  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  118. 4835  PRINT : PRINT 
  119. 4840  PRINT "HERE ARE SOME OF THE OTHER DEVICES/MEDIAWHICH MAY BE USED WITH COMPUTERS:"
  120. 4849  PRINT : PRINT 
  121. 4850  PRINT "PUNCHED CARDS"; TAB( 21);"PAPER TAPE"
  122. 4851  PRINT 
  123. 4852  PRINT "MAGNETIC TAPE"; TAB( 21);"VISUAL DISPLAY UNIT"
  124. 4853  PRINT 
  125. 4854  PRINT "DISK PACK"; TAB( 21);"OPTICAL CHAR.READER"
  126. 4855  PRINT 
  127. 4856  PRINT "MAG.CHAR.READER"; TAB( 21);"KIMBALL TAGS"
  128. 4857  PRINT 
  129. 4858  PRINT "BAR CODE READER"; TAB( 21);"VOICE RECOG.DEVICE."
  130. 4859  PRINT 
  131. 4860  PRINT "GRAPH PLOTTER"; TAB( 21);"MICROFILMER"
  132. 4870  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  133. 4900  PRINT : PRINT 
  134. 4910  PRINT "DEVICES ATTACHED TO THE MAIN COMPUTER   FOR INPUT, BACKING STORE (DISK UNITS    ETC), AND OUTPUT, ARE REFERRED TO AS": INVERSE : PRINT "PERIPHERALS";: NORMAL : PRINT ".": PRINT : PRINT 
  135. 4930  PRINT "THE COMPUTER ITSELF AND THE VARIOUS     PERIPHERALS ARE REFERRED TO AS ";: INVERSE : PRINT "HARDWARE";: NORMAL : PRINT ".";
  136. 4940  PRINT 
  137. 4950  PRINT "SETS OF INSTRUCTIONS (PROGRAMS) ARE     REFERRED TO AS ";: INVERSE : PRINT "SOFTWARE";: NORMAL : PRINT "."
  138. 4951  PRINT 
  139. 4952  PRINT "IF THERE IS SOFTWARE PERMANENTLY HELD INMEMORY (E.G. READ ONLY MEMORY) IT IS    REFERRED TO AS ";: INVERSE : PRINT "FIRMWARE";: NORMAL : PRINT "."
  140. 4955  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  141. 4956  PRINT : PRINT 
  142. 4960  PRINT "A COMPUTER ";: INVERSE : PRINT "SYSTEM";: NORMAL : PRINT " IS MADE UP OF THREE   MAIN ELEMENTS:"
  143. 4970  PRINT : PRINT : PRINT "1.HARDWARE": PRINT : PRINT "2.SOFTWARE": PRINT : PRINT "3.PEOPLE": PRINT : PRINT : PRINT 
  144. 5000  PRINT "ALL THREE ARE NECESSARY FOR A COMPUTER  SYSTEM TO BE VIABLE, BUT ";: INVERSE : PRINT "PEOPLE";: NORMAL 
  145. 5010  PRINT " ARE THE MOST IMPORTANT. ALL SYSTEMS SHOULD BE   GEARED FOR THE ";: INVERSE : PRINT "USER";: NORMAL : PRINT ", MOREOVER IT IS THE HUMAN BEING WHO CREATES THE HARDWARE,THESOFTWARE, AND USES THE COMPUTER."
  146. 5020  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  147. 5030  PRINT : PRINT 
  148. 5040  PRINT "SOFTWARE MAY BE CLASSIFIED INTO THREE   GROUPS:": PRINT : PRINT 
  149. 5050  PRINT "1.";: INVERSE : PRINT "OPERATING SYSTEMS";: NORMAL : PRINT ":- THESE PROVIDE     OVERALL CONTROL OF THE SYSTEM.": PRINT 
  150. 5060  PRINT "2.";: INVERSE : PRINT "UTILITY PROGRAMS";: NORMAL : PRINT ":- THESE ARE FOR      COMMON TASKS, E.G. SORTING, CONVERTING  FROM DISK TO TAPE, ETC.": PRINT 
  151. 5070  PRINT "3.";: INVERSE : PRINT "APPLICATIONS PACKAGES";: NORMAL : PRINT ":- E.G. PAYROLL, INVOICING, ETC."
  152. 5080  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  153. 5090  PRINT : INVERSE : PRINT "FURTHER BACKGROUND INFORMATION": NORMAL : PRINT 
  154. 5120  PRINT "A COMPUTER PROGRAM MUST BE HELD IN      MEMORY BEFORE IT WILL WORK. THE DATA    MUST ALSO BE AVAILABLE FOR USE BY THE   PROGRAM.": PRINT : PRINT : PRINT 
  155. 5130  PRINT "EVERY CHARACTER ENTERED AT THE KEYBOARD,OR READ FROM DISK OR OTHER DEVICE IS    REPRESENTED IN MEMORY AS THE BINARY     EQUIVALENT OF A NUMERIC CODE (";: INVERSE : PRINT "ASCII";: NORMAL : PRINT ").": PRINT : PRINT 
  156. 5140  PRINT "A CHARACTER CAN BE ANY LETTER, DIGIT, ORSPECIAL SYMBOL, E.G. $,&,#,ETC.": PRINT 
  157. 5145  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  158. 5146  PRINT : PRINT 
  159. 5150  PRINT "THE COMPUTER EASILY REPRESENTS          INFORMATION IN BINARY (TWO-STATE) FORM. A SWITCH MAY BE ON OR OFF. THERE IS     EITHER POWER (OR AN ELECTRICAL PULSE) INA PARTICULAR CIRCUIT, OR NOT. NO POWER  MAY REPRESENT ZERO, WHILE POWER";
  160. 5152  PRINT "         REPRESENTS ONE.": PRINT 
  161. 5154  PRINT "EACH CHARACTER (ALPHABETIC OR NUMERIC), HAVING BEEN CONVERTED INTO THE BINARY   EQUIVALENT OF ITS 'ASCII' CODE, IS THEN OPERATED UPON BY THE COMPUTER AT        TREMENDUOUS SPEEDS."
  162. 5160  PRINT : PRINT 
  163. 5180  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  164. 5200  PRINT : PRINT "BEFORE A PROGRAMMER APPROACHES A        COMPUTER (EXCEPT FOR TRIVIAL PROBLEMS)  HE MUST HAVE HIS 'HOMEWORK' DONE.": PRINT 
  165. 5210  PRINT "A PROBLEM MUST FIRST BE FULLY ANALYSED, AND THE SOLUTION WORKED OUT. THE PROBLEMCOULD BE ANYTHING FROM WORKING OUT A    SMALL MATHEMATICAL PROBLEM TO ANALYSING EXISTING LARGE BUSINESS SYSTEMS AND     RE-DESIGNING THEM.": PRINT 
  166. 5220  PRINT "THE LOGICAL FLOW OF PROCEDURES MUST BE  CLEARLY LAID OUT, IN CONSULTATION WITH  THE END USER(S). USE MAY BE MADE OF     FLOWCHARTS (STEPS TO BE CARRIED OUT     REPRESENTED IN DIAGRAMMATIC FORM), AND/ OR ALGORITHMS (STEPS SET OUT ";
  167. 5222  PRINT "IN WRITTEN FORM).": PRINT 
  168. 5224  PRINT "NOTE:- THE ABOVE WORK CAN TAKE MUCH     LONGER THAN THE ACTUAL PROGRAMMING."
  169. 5230  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  170. 5250  PRINT : PRINT : PRINT "PROGRAMMERS HAD ORIGINALLY TO WRITE     THEIR PROGRAMS IN ";: INVERSE : PRINT "MACHINE CODE";: NORMAL 
  171. 5260  PRINT " (LOW     LEVEL LANGUAGE) WHICH WAS VERY TEDIOUS, COMPLICATED, TIME-CONSUMING AND ERROR-  PRONE. NOWADAYS HIGH-LEVEL NEAR ENGLISH/MATHEMATICAL LANGUAGES, WHICH ARE FAR   EASIER TO USE, ARE AVAILABLE.": PRINT 
  172. 5270  INVERSE : PRINT "INTERPRETERS";: NORMAL 
  173. 5275  PRINT " OR ";
  174. 5280  INVERSE : PRINT "COMPILERS";: NORMAL 
  175. 5290  PRINT " CONVERT THE   HIGH LEVEL LANGUAGES INTO MACHINE CODE  AUTOMATICALLY."
  176. 5295  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  177. 5300  PRINT : PRINT "THERE ARE MANY HIGH LEVEL LANGUAGES     AVAILABLE, (EXAMPLES BELOW), EACH WITH  IT'S OWN CHARACTERISTICS AND GRAMMATICALRULES (SYNTAX)."
  178. 5330  PRINT : INVERSE : PRINT "FORTRAN";: NORMAL 
  179. 5340  PRINT " SUITABLE FOR MATHEMATICAL/      SCIENTIFIC APPLICATIONS."
  180. 5345  PRINT 
  181. 5350  INVERSE : PRINT "COBOL";: NORMAL 
  182. 5360  PRINT " SUITABLE FOR BUSINESS APPLICATIONS"
  183. 5370  INVERSE : PRINT "BASIC";: NORMAL 
  184. 5380  PRINT " GENERAL PURPOSE LANGUAGE, EASY TO LEARN, AND WIDELY AVAILABLE, ESPECIALLY ON SMALL COMPUTERS."
  185. 5382  PRINT : INVERSE : PRINT "PASCAL";: NORMAL : PRINT " A GENERAL PURPOSE/EDUCATIONAL    TYPE LANGUAGE."
  186. 5384  PRINT : INVERSE : PRINT "RPG";: NORMAL : PRINT " SUITABLE FOR GENERATING BUSINESS    REPORTS."
  187. 5390  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  188. 5400  PRINT : PRINT "COMPUTER PROGRAMS RARELY WORK PROPERLY  WHEN FIRST WRITTEN. TO FIND AND CORRECT ERRORS IS CALLED ";: INVERSE : PRINT "DEBUGGING";: NORMAL : PRINT ". THERE ARE   ";: INVERSE : PRINT "SYNTAX";: NORMAL : PRINT " ERRORS, AND ";: INVERSE : PRINT "LOGICAL";: NORMAL : PRINT " ERRORS."
  189. 5420  PRINT : PRINT "WHEN THE RULES (SYNTAX) OF A LANGUAGE   ARE BROKEN IN A PROGRAM, THE INTERPRETEROR COMPILER WILL SHOW THEM UP. THESE ARERELATIVELY EASY TO CORRECT, VERY OFTEN  BEING MERELY TYPING ERRORS.": PRINT 
  190. 5422  PRINT "ANOTHER MORE DIFFICULT TYPE OF ERROR TO FIND AND CORRECT IS THE LOGICAL TYPE OF ERROR. (YOU MUST DO YOUR 'HOMEWORK' -   PROBLEM ANALYSIS, INCORPORATING         ALGORITHMS AND/OR FLOWCHARTS  ";: FLASH : PRINT "PRIOR TO": NORMAL 
  191. 5423  PRINT "PROGRAMMING).": PRINT 
  192. 5430  PRINT "YOU MAY NOW BEGIN SECTION 2 WHEN YOU    RETURN TO THE MAIN 'MENU'."
  193. 5470  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  194. 5480  RETURN 
  195. 5500  REM 
  196. 5510  TEXT : HOME : PRINT  TAB( 12);: INVERSE : PRINT "BEGINNING BASIC": NORMAL : PRINT : POKE 34,2
  197. 5530  PRINT "A ";: INVERSE : PRINT "BASIC";: NORMAL : PRINT " PROGRAM IS A SET OF INSTRUCTIONSREFERRED TO AS ";: INVERSE : PRINT "STATEMENTS";: NORMAL : PRINT ", IN ASCENDING LINE-NUMBER ORDER (IN RANGE 0-63999 IN  OUR CASE).  ";
  198. 5540  PRINT "LINE NUMBERS ARE USUALLY IN INTERVALS OF TEN TO ALLOW FOR EASY      AMENDMENT/INSERTION OF ADDITIONAL LINES."
  199. 5550  PRINT "THESE INSTRUCTIONS ARE STORED IN        COMPUTER MEMORY, AND ARE ";: INVERSE : PRINT "EXECUTED": NORMAL : PRINT "(OBEYED) IN SEQUENCE, USUALLY IN        ASCENDING ORDER, BUT SUBJECT TO         BRANCHING INSTRUCTIONS."
  200. 5559  PRINT 
  201. 5560  PRINT "INSTRUCTIONS USUALLY OPERATE ON DATA    CONTAINED WITHIN THE PROGRAM, ARE       PROVIDED AT THE KEYBOARD DURING PROGRAM EXECUTION, OR ARE OBTAINED FROM A DATA  FILE HELD EXTERNALLY (E.G. FLOPPY DISK  OR CASSETTE TAPE)."
  202. 5580  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  203. 5590  PRINT "BEFORE A PROGRAM CAN BE RUN (EXECUTED)  IT MUST BE AVAILABLE IN COMPUTER MEMORY."
  204. 5595  PRINT 
  205. 5600  PRINT "YOU MAY ";: INVERSE : PRINT "LOAD";: NORMAL : PRINT " A PROGRAM INTO MEMORY FROM TAPE OR DISK, IF AVAILABLE, OR YOU MAY  ENTER YOUR OWN PROGRAM AT THE KEYBOARD, PROVIDED YOU HAVE IT PRE-PREPARED."
  206. 5605  PRINT : PRINT 
  207. 5610  PRINT "THIS TUTORIAL SHOULD HELP YOU TO WRITE  YOUR OWN ";: INVERSE : PRINT "BASIC";: NORMAL : PRINT " COMPUTER PROGRAMS."
  208. 5615  PRINT : PRINT 
  209. 5620  PRINT "OPTIONS 1 & 2 FROM THE CURRENT MENU GIVEBACKGROUND INFORMATION AND A SIMPLE     OVERVIEW. OPTION 3 STARTS SOME SIMPLE   PROGRAMMING."
  210. 5630  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  211. 5635  VTAB 8: FLASH : PRINT "N.B.": NORMAL : PRINT 
  212. 5636  INVERSE : PRINT "THE IMPORTANCE OF THE LEARNER TRYING OUTHIS/HER OWN PROGRAMS CANNOT BE OVER-    STRESSED. LEARNING TO PROGRAM IS        ESSENTIALLY A PRACTICAL EXERCISE !!": NORMAL 
  213. 5637  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  214. 5640  RETURN 
  215. 6000  REM 
  216. 6010  TEXT : HOME : PRINT  TAB( 10);: INVERSE : PRINT "READ/DATA/LET/PRINT": NORMAL 
  217. 6030  PRINT "JUST AS THERE ARE THREE MAIN FUNCTIONS  OF A COMPUTER, ";: INVERSE : PRINT "INPUT, PROCESS, OUTPUT";: NORMAL : PRINT ",  SO THERE ARE THREE CORRESPONDING TYPES  OF INSTRUCTION (AMONG OTHERS)."
  218. 6035  PRINT : INVERSE : PRINT "SIMPLE PROGRAM TO CALCULATE GROSS PAY   FOR HOURLY PAID WORKER": NORMAL 
  219. 6050  PRINT : PRINT "10 READ H";: PRINT  TAB( 30);: INVERSE : PRINT "INPUT": NORMAL : PRINT 
  220. 6070  PRINT "20 READ R";: PRINT  TAB( 30);: INVERSE : PRINT "INPUT": NORMAL : PRINT : PRINT "30 LET P=H*R";: PRINT  TAB( 30);: INVERSE : PRINT "PROCESS": NORMAL : PRINT 
  221. 6110  PRINT "40 PRINT "; CHR$(34);"PAY EQUALS "; CHR$(34);";P";: PRINT  TAB( 30);: INVERSE : PRINT "OUTPUT": NORMAL : PRINT 
  222. 6130  PRINT "50 DATA 40": PRINT : PRINT "60 DATA 5": PRINT : PRINT "70 END": GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  223. 6170  INVERSE : PRINT "PROGRAM-HOURLY PAID WORKER": NORMAL 
  224. 6180  PRINT "10 READ H";: PRINT  TAB( 30);: INVERSE : PRINT "INPUT": NORMAL : PRINT "20 READ R";
  225. 6210  PRINT  TAB( 30);: INVERSE : PRINT "INPUT": NORMAL : PRINT "30 LET P=H*R";: PRINT  TAB( 30);: INVERSE : PRINT "PROCESS": NORMAL 
  226. 6240  PRINT "40 PRINT "; CHR$(34);"PAY EQUALS "; CHR$(34);";P";: PRINT  TAB( 30);: INVERSE : PRINT "OUTPUT": NORMAL 
  227. 6260  PRINT "50 DATA 40": PRINT "60 DATA 5": PRINT "70 END": PRINT : POKE 34, PEEK(37): HOME : INVERSE : PRINT "PROGRAM EXPLANATION": NORMAL 
  228. 6320  PRINT "IF DATA ITEMS ARE KNOWN WHEN WRITING A  PROGRAM, ";: INVERSE : PRINT "READ";: NORMAL : PRINT " STATEMENTS WITH MATCHING ": INVERSE : PRINT "DATA";: NORMAL : PRINT " STATEMENTS MAY BE USED."
  229. 6329  PRINT 
  230. 6330  PRINT "JUST AS IN MATHEMATICS WE OFTEN USE     LETTERS TO STAND FOR DATA ITEMS, SO IN": INVERSE : PRINT "BASIC";: NORMAL : PRINT " PROGRAMMING WE MAY USE LETTERS AS": INVERSE : PRINT "VARIABLES";: NORMAL 
  231. 6340  PRINT " TO STAND FOR DATA ITEMS. WE   NORMALLY CHOOSE APPROPRIATE VARIABLE    NAMES, E.G. 'H' FOR HOURS, 'R' FOR RATE,AND 'P' FOR PAY. WE THEN REFER TO THE   DATA ITEMS BY MEANS OF THE VARIABLES."
  232. 6360  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  233. 6370  PRINT "LINES 10 AND 20 REQUEST DATA TO BE      STORED IN MEMORY LOCATIONS WHICH WE ARE NAMING 'H' AND 'R'. IT NEED NOT CONCERN US WHERE IN MEMORY THEY ARE AS THE      COMPUTER RECORDS THIS."
  234. 6375  PRINT 
  235. 6380  PRINT "THE FIRST DATA ITEM 40 WILL BE STORED INTHE FIRST VARIABLE LOCATION, 'H', WHILE THE SECOND DATA ITEM 5 WILL BE STORED IN'R'."
  236. 6385  PRINT 
  237. 6390  PRINT "NOTE THAT DATA LINES MAY BE ANYWHERE IN A PROGRAM, BUT THEY ARE TAKEN IN THE    ORDER IN WHICH THEY ARE MET."
  238. 6400  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  239. 6405  PRINT : PRINT "NOTE THAT WHERE NUMERIC VARIABLES ARE   BEING USED DATA ITEMS MUST BE STRICTLY  NUMERIC, I.E. '$5.00' , '40LBS', '50P', ETC., ARE NOT ALLOWED. IF USED THE      COMPUTER WILL RESPOND WITH              'SYNTAX ERROR'."
  240. 6406  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  241. 6410  INVERSE : PRINT "VARIABLE N<CTRL-A>AMES - BRIEF NOTE": NORMAL 
  242. 6415  PRINT 
  243. 6420  PRINT "A SINGLE LETTER A-Z MAY BE USED TO      REPRESENT REAL NUMBERS, AS MAY A SINGLE LETTER FOLLOWED BY A DIGIT, E.G. A0-A9, B0-B9.....Z0-Z9. ARRAY VARIABLES AND    INTEGER AND STRING VARIABLES WILL BE    TREATED LATER."
  244. 6430  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  245. 6431  PRINT : PRINT 
  246. 6432  PRINT "NOTE:- SOME SYSTEMS ADDITIONALLY ALLOW  TWO LETTERS AS VARIABLE NAMES (INCLUDINGAPPLE). LONGER VARIABLE NAMES ARE ALSO  ALLOWED, BUT USUALLY ONLY THE FIRST TWO POSITIONS ARE SIGNIFICANT, SO ";: FLASH : PRINT "BEWARE";: NORMAL : PRINT "."
  247. 6439  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  248. 6440  INVERSE : PRINT "THE ASSIGNMENT STATEMENT": NORMAL 
  249. 6445  PRINT 
  250. 6450  PRINT "LINE 30 MEANS:EVALUATE THE EXPRESSION ONTHE RIGHT AND ASSIGN THE RESULT TO THE  (SINGLE) VARIABLE ON THE LEFT OF THE    EQUALS SIGN. NOTE THAT THE ASTERISK '*' IS USED FOR MULTIPLICATION, AS THE      LETTER 'X' MAY NOT BE USED."
  251. 6460  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  252. 6461  PRINT : PRINT 
  253. 6465  PRINT "NOTE THAT CONSTANTS, I.E. SPECIFIED     VALUES INSTEAD OF VARIABLES ARE ALLOWED,E.G.": PRINT : PRINT "30 LET P=40*R": PRINT : PRINT "THESE MAY BE USED WHEN THERE ARE        DEFINITE VALUES WHICH DO NOT CHANGE."
  254. 6466  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  255. 6467  PRINT : PRINT "IN SOME VERSIONS OF BASIC (INCLUDING    APPLESOFT) THE 'LET' IS OPTIONAL, I.E.": PRINT : PRINT "30 P=H*R": PRINT : PRINT "IS ALSO ALLOWED. WHILE OMITTING THE     'LET' MAY SAVE MEMORY SPACE, PROGRAMS"
  256. 6468  PRINT "ARE MORE MEANINGFUL WITH 'LET'. AS NOT  ALL VERSIONS ALLOW THIS OPTIONALITY THE PROGRAMS WILL ALSO BE EASIER TO TRANSFERTO OTHER SYSTEMS."
  257. 6469  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  258. 6470  INVERSE : PRINT "PRINT": NORMAL 
  259. 6480  PRINT "IF WE SAY ' PRINT P ' WE MEAN OUTPUT THECONTENTS OF STORE LOCATION 'P'. WE      DISTINGUISH MESSAGES TO BE PRINTED OUT  FROM VARIABLES BY PUTTING MESSAGES IN   DOUBLE QUOTES "; CHR$(34);"."
  260. 6485  PRINT 
  261. 6490  INVERSE : PRINT "PRINT"; CHR$(34);"P"; CHR$(34);: NORMAL : PRINT " MEANS PRINT THE LETTER": PRINT "(CHARACTER) 'P'."
  262. 6495  PRINT 
  263. 6500  INVERSE : PRINT "PRINT P";: NORMAL : PRINT " MEANS PRINT THE CONTENTS OF     STORE LOCATION (THE VARIABLE) 'P'."
  264. 6510  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  265. 6520  PRINT "THE STATEMENT IN LINE 40 SHOULD BE MORE OR LESS SELF-EXPLANATORY. THE WORDS     'PAY EQUALS ' WILL BE PRINTED, FOLLOWED BY THE VALUE 200 OF THE VARIABLE 'P'    WHICH HAS BEEN EVALUATED IN LINE 30."
  266. 6525  PRINT 
  267. 6530  PRINT "THE SEMI-COLON IN LINE 40 FORCES THE    VALUE OF 'P' TO BE PRINTED IMMEDIATELY  FOLLOWING THE WORDS 'PAY EQUALS '."
  268. 6535  PRINT 
  269. 6540  PRINT "LINE 70 INDICATES THE LOGICAL END OF THEPROGRAM."
  270. 6550  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  271. 6552  VTAB 16: PRINT "THE NEXT SECTION  DEALS WITH PROGRAM    ENTRY, LISTING AND RUNNING."
  272. 6558  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  273. 6599  RETURN 
  274. 6600  REM 
  275. 6601  TEXT : HOME 
  276. 6610  INVERSE : PRINT "ARITHMETIC OPERATORS/ORDER OF PRECEDENCE": NORMAL 
  277. 6615 W = 1
  278. 6616 W1 = 24
  279. 6620  PRINT  TAB( W);"+   ADDITION";
  280. 6625  PRINT  TAB( W1);"4   ) OF EQUAL"
  281. 6630  PRINT  TAB( W);"-   SUBTRACTION";
  282. 6635  PRINT  TAB( W1);"4   ) IMPORTANCE"
  283. 6636  PRINT 
  284. 6640  PRINT  TAB( W);"*   MULTIPLICATION";
  285. 6645  PRINT  TAB( W1);"3   ) OF EQUAL"
  286. 6650  PRINT  TAB( W);"/   DIVISION";
  287. 6655  PRINT  TAB( W1);"3   ) IMPORTANCE"
  288. 6656  PRINT 
  289. 6660  PRINT  TAB( W);"^   EXPONENTIATION";
  290. 6665  PRINT  TAB( W1);"2"
  291. 6670  PRINT  TAB( W);"    (TO POWER OF)
  292. 6671  PRINT 
  293. 6680  PRINT  TAB( W);"()  PARENTHESES";
  294. 6685  PRINT  TAB( W1);"1"
  295. 6690  PRINT  TAB( W);"    (ROUND BRACKETS)"
  296. 6695  PRINT : PRINT : POKE 34, PEEK(37): HOME 
  297. 6700  INVERSE : PRINT "NOTES:": NORMAL : PRINT 
  298. 6720  PRINT "WHERE THERE ARE TWO OR MORE OPERATORS OFEQUAL PRECEDENCE TO BE CARRIED OUT IN ANEXPRESSION THE COMPUTER WILL WORK FROM  LEFT TO RIGHT."
  299. 6725  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  300. 6730  PRINT "NO ASSUMED ARITHMETIC OPERATORS ARE     ALLOWED, E.G. 'A(B+C)' SHOULD BE ENTEREDAS 'A*(B+C)'.": PRINT 
  301. 6740  PRINT "WHERE THERE IS ANY AMBIGUITY, OR WHERE  YOU WISH TO CHANGE THE NORMAL ORDER OF  PRECEDENCE PARENTHESES MAY BE USED."
  302. 6750  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  303. 6799  RETURN 
  304. 6800  REM 
  305. 6810  TEXT : HOME : INVERSE : PRINT "PROGRAM - HOURLY PAID WORKER": NORMAL : PRINT "10 READ H": PRINT "20 READ R": PRINT "30 LET P=H*R"
  306. 6890  PRINT "40 PRINT "; CHR$(34);"PAY EQUALS "; CHR$(34);";P": PRINT "50 DATA 40": PRINT "60 DATA 5": PRINT "70 END": PRINT : POKE 34, PEEK(37): HOME 
  307. 6960  INVERSE : PRINT "PROCEDURE FOR PROGRAM ENTRY/LIST/RUN": NORMAL 
  308. 6965  PRINT : POKE 34, PEEK(37): HOME 
  309. 6970  PRINT "1.CLEAR MEMORY BY TYPING THE COMMAND ";: INVERSE : PRINT "NEW";: NORMAL : PRINT " AND PRESSING THE 'RETURN' KEY."
  310. 6975  PRINT 
  311. 6980  PRINT "2.ENTER THE PROGRAM, LINE BY LINE, AND  PRESS THE 'RETURN' KEY AT THE END OF    EACH LINE.": PRINT 
  312. 6990  PRINT "3.EDIT/RETYPE ANY INCORRECT LINE."
  313. 6995  PRINT 
  314. 7000  PRINT "4.LIST PROGRAM FOR CHECKING USING THE   COMMAND ";: INVERSE : PRINT "LIST": NORMAL 
  315. 7005  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  316. 7010  PRINT "5.EXECUTE THE PROGRAM BY TYPING THE     COMMAND ";: INVERSE : PRINT "RUN": PRINT : PRINT "PROGRAM OUTPUT AFTER ";: INVERSE : PRINT "RUN": NORMAL : PRINT : PRINT "PAY EQUALS 200"
  317. 7015  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  318. 7020  PRINT "6.SAVE THE PROGRAM (ON SEPARATE DISK):": PRINT : INVERSE : PRINT "SAVE";: NORMAL : PRINT "<PROGRAM NAME>": PRINT : PRINT "NOTE:-MAX LENGTH 30 CHARACTERS, AND THE FIRST MUST BE A LETTER."
  319. 7050  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  320. 7055  PRINT "NOTE:- PROVIDED THE PROMPT SYMBOL ']' ISSHOWING, ALONG WITH THE CURSOR AT THE   LEFT OF THE SCREEN, THE COMPUTER MAY BE USED IN 'DIRECT' MODE, I.E. WITHOUT LINENUMBERS, E.G.": PRINT : PRINT "]PRINT P": PRINT 
  321. 7056  PRINT "THIS COMMAND WILL RESPOND WITH THE VALUE200 AFTER THE ABOVE PROGRAM HAS BEEN    RUN.": PRINT 
  322. 7059  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  323. 7060  INVERSE : PRINT "EXAMPLES": NORMAL 
  324. 7070  PRINT "]PRINT 4*5/2-3": PRINT : PRINT "WILL RESPOND WITH    7"
  325. 7075  PRINT 
  326. 7076  PRINT "]PRINT 1200 * 1.125 ^ 40": PRINT 
  327. 7080  PRINT "$1200 INVESTED @ 12.5% COMPOUND          INTEREST FOR 40 YEARS, YIELDS:"
  328. 7086  PRINT : PRINT 1200 *1.125 ^40
  329. 7090  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  330. 7092  PRINT : INVERSE : PRINT "TRYING OUT A PROGRAM FROM TUTORIAL": NORMAL : PRINT 
  331. 7094  PRINT "1.GOTO MAIN MENU": PRINT : PRINT "2.EXIT - FINISH": PRINT : PRINT "3.ENTER/EDIT/RUN/SAVE": PRINT : PRINT "4.RE-BOOT TUTOR DISK (PR#6)"
  332. 7096  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  333. 7100  RETURN 
  334. 7200  REM 
  335. 7210  TEXT : HOME : GOSUB 505: PRINT : POKE 34, PEEK(37): HOME : INVERSE : PRINT "BRANCHING/LOOPING": NORMAL 
  336. 7240  PRINT "THE FIRST PROGRAM (ABOVE) IS RATHER     LIMITED, AS AMONG OTHER THINGS IT CATERSFOR ONLY ONE EMPLOYEE. WE WILL EXPAND   THIS, PROVIDING MORE DATA, AND USING A  BRANCH INSTRUCTION ";: INVERSE : PRINT "GOTO";: NORMAL : PRINT "."
  337. 7245  PRINT 
  338. 7250  PRINT : PRINT "WE MAY ADD THE FOLLOWING LINES TO THE   ABOVE PROGRAM:": PRINT : PRINT "45 GOTO 10": PRINT "65 DATA 50,4,44,6,40,4": GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  339. 7285  TEXT : HOME : GOSUB 600: PRINT : POKE 34, PEEK(37): HOME : PRINT "RE-LISTING THE PROGRAM WILL SHOW THE    EXTRA LINES IN THEIR PLACE, AS ABOVE.": PRINT 
  340. 7300  PRINT "NOTE THAT BOTH ";: INVERSE : PRINT "READ";: NORMAL : PRINT " AND ";: INVERSE : PRINT "DATA";: NORMAL : PRINT " STATEMENTS"
  341. 7310  PRINT "MAY CONTAIN MULTIPLE VARIABLES/DATA     ITEMS, AS LONG AS THEY ARE SEPARATED BY COMMAS (NONE AT END OF STATEMENT LINE,  HOWEVER)."
  342. 7320  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  343. 7330  INVERSE : PRINT "EXPLANATION": NORMAL 
  344. 7340  PRINT "THE COMPUTER SETS UP A LIST OF DATA     AVAILABLE TO THE PROGRAM IN THE ORDER INWHICH IT HAS BEEN ENTERED IN THE PROGRAMSTATEMENT LINES."
  345. 7345  PRINT 
  346. 7350  PRINT "LINE 45 SETS UP A ";: INVERSE : PRINT "LOOP";: NORMAL 
  347. 7360  PRINT " IN THE PROGRAM,  AS EVERY TIME THE COMPUTER REACHES LINE 45 IT RETURNS TO LINE 10 AND READS      ANOTHER VALUE FOR 'H'. ACCORDING AS DATAITEMS ARE 'READ' A POINTER MOVES ALONG  TO THE NEXT DATA ITEM."
  348. 7370  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  349. 7380  PRINT "THE SECOND TIME AROUND THE 'LOOP' THE   VALUE 50 WILL REPLACE THE VALUE 40 FOR  THE VARIABLE 'H'. SIMILARLY 'R' WILL    HAVE A NEW VALUE 4, ETC."
  350. 7390  PRINT 
  351. 7400  PRINT "WHEN THE LAST DATA ITEM HAS BEEN READ   THE COMPUTER WILL STILL LOOK FOR ANOTHERDATA ITEM WHEN IT RETURNS TO LINE 10. ASTHERE IS NOW NO MORE DATA AN 'OUT OF    DATA' ERROR MESSAGE WILL BE OUTPUT."
  352. 7410  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  353. 7420  PRINT "DESPITE THE ERROR MESSAGE THE RESULTS   WILL STILL BE OUTPUT."
  354. 7425  PRINT 
  355. 7430  PRINT "THE 'PROBLEM' OF THE ERROR MESSAGE CAN  BE SOLVED IN THE NEXT SECTION."
  356. 7435  PRINT 
  357. 7440  PRINT "NOTE THAT ";: INVERSE : PRINT "GOTO";: NORMAL : PRINT " IS REFERRED TO AS AN     UNCONDITIONAL BRANCH OR JUMP."
  358. 7445  PRINT 
  359. 7450  PRINT "IN THE NEXT SECTION YOU WILL BEGIN THE  CONDITIONAL BRANCH/JUMP STATEMENT": INVERSE : PRINT "IF-THEN";: NORMAL : PRINT "."
  360. 7460  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  361. 7470  RETURN 
  362. 7600  REM 
  363. 7610  TEXT : HOME 
  364. 7615  PRINT  TAB( 9);
  365. 7620  INVERSE : PRINT "CONDITIONAL BRANCHING": NORMAL 
  366. 7621  PRINT : POKE 34,2: HOME 
  367. 7630  PRINT "IN ORDER TO PROCESS LISTS OF DATA,      EACH GROUP IN A SIMILAR WAY, WE USED A  LOOP. HOWEVER, AS THE COMPUTER DID NOT  KNOW WHEN TO STOP WE ENDED UP WITH AN   ERROR MESSAGE."
  368. 7635  PRINT 
  369. 7640  PRINT "WE MAY AVOID THESE ERROR MESSAGES BY    ADDING AN EXTRA 'ROGUE' VALUE AS A      TERMINATOR, OR SIGNAL TO TO THE COMPUTERTHAT THERE ARE NO MORE DATA ITEMS IN THECURRENT LIST. IT IS SOMETIMES CALLED A  'DUMMY' VALUE."
  370. 7645  PRINT 
  371. 7650  PRINT "THIS FICTICIOUS VALUE CHOSEN WILL OF    COURSE BE A VALUE OUTSIDE THE NORMAL    RANGE OF VALUES FOR THE VARIABLE IN     QUESTION, E.G. A NEGATIVE VALUE, ZERO,  9999, ZZZZ, ETC., DEPENDING ON THE      CIRCUMSTANCES."
  372. 7655  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  373. 7660  PRINT "HAVING ADDED THE TERMINATOR, IT IS      NECESSARY TO CHECK THE VALUE OF THE     VARIABLE IN QUESTION EACH TIME AROUND   THE LOOP TO SEE IF IT IS THE TERMINATOR.WE DO THIS USING THE CONDITIONAL        BRANCHING STATEMENT ";
  374. 7670  INVERSE : PRINT "IF-THEN";: NORMAL : PRINT "."
  375. 7675  PRINT 
  376. 7680  PRINT "WE WILL HAVE ANOTHER LOOK AT THE LAST   PROGRAM TO SEE HOW WE MIGHT ADAPT IT."
  377. 7685  PRINT 
  378. 7690  PRINT "AS A ROGUE VALUE WE COULD CHOOSE -1 FOR THE NO.OF HOURS (NOBODY WORKS -1 HOURS)."
  379. 7695  PRINT 
  380. 7700  PRINT "WE WILL THEN HAVE TO TEST EACH VALUE OF 'H' EVERY TIME WE READ A NEW VALUE FOR  IT TO SEE IF IT IS THE TERMINATOR -1."
  381. 7710  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  382. 7720  TEXT : HOME 
  383. 7730  GOSUB 600
  384. 7740  PRINT : POKE 34, PEEK(37): HOME 
  385. 7749  PRINT 
  386. 7750  PRINT "LET US EXAMINE THE PREVIOUS PROGRAM     (ABOVE) WHEN WE HAVE ADDED THE FOLLOWINGTWO LINES TO IT:"
  387. 7755  PRINT 
  388. 7760  PRINT "66 DATA -1               (ROGUE VALUE)"
  389. 7765  PRINT 
  390. 7770  PRINT "15 IF H = -1 THEN 70      (CHECKS 'H')"
  391. 7780  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  392. 7790  TEXT : HOME 
  393. 7800  GOSUB 700
  394. 7810  PRINT : POKE 34, PEEK(37): HOME 
  395. 7820  PRINT "EACH TIME 'H' RECEIVES A NEW VALUE IN   LINE 10 IT IS IMMEDIATELY COMPARED WITH -1 IN LINE 15. IF 'H' IS NOT EQUAL TO   -1 THE COMPUTER CONTINUES ON WITH LINE  20. IT IS ONLY WHEN THE CONDITION IN    LINE 15 IS ";
  396. 7830  INVERSE : PRINT "TRUE";: NORMAL : PRINT " THAT CONTROL PASSES TO  LINE 70, I.E. WHEN THE TERMINATOR -1 HASBEEN READ."
  397. 7840  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  398. 7850  RETURN 
  399. 8000  REM 
  400. 8010  TEXT : HOME 
  401. 8015  PRINT  TAB( 10);
  402. 8020  INVERSE : PRINT "RELATIONAL OPERATORS": NORMAL 
  403. 8021  PRINT 
  404. 8022  POKE 34,2: HOME 
  405. 8024  PRINT "WE MAY COMPARE TWO VARIABLES OR         EXPRESSIONS FOR EQUALITY, INEQUALITY, ORWE MAY COMPARE THEM TO SEE IF ONE IS    GREATER THAN ANOTHER, ETC.": PRINT 
  406. 8026  PRINT "A TABLE OF RELATIONAL OPERATORS FOLLOWS ALONG WITH SOME EXAMPLES.": PRINT : PRINT "FOR THE EXPERIENCED PROGRAMMER SOME     SYSTEMS (INCLUDING APPLE) ALLOW THE     LOGICAL OPERATORS ";
  407. 8027  INVERSE : PRINT "AND, OR, NOT";: NORMAL : PRINT ", BUT     THESE ARE NOT DEALT WITH HERE."
  408. 8028  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  409. 8029 W = 10
  410. 8030  PRINT  TAB( W);"=   EQUALS"
  411. 8040  PRINT  TAB( W);"<   LESS THAN"
  412. 8050  PRINT  TAB( W);">   GREATER THAN"
  413. 8060  PRINT  TAB( W);"<=  LESS THAN OR EQUAL TO"
  414. 8070  PRINT  TAB( W);">=  GREATER THAN OR EQUAL TO"
  415. 8080  PRINT  TAB( W);"<>  NOT EQUAL TO"
  416. 8085  PRINT 
  417. 8090  PRINT "NOTE THAT WITH EACH OF THE LAST THREE   OPERATORS TWO SEPARATE SYMBOLS ARE      NECESSARY."
  418. 8095  PRINT 
  419. 8100  INVERSE : PRINT "EXAMPLES": NORMAL 
  420. 8105  PRINT 
  421. 8110  PRINT "10 IF A = B THEN 100": PRINT 
  422. 8120  PRINT "20 IF A < B THEN 200": PRINT 
  423. 8130  PRINT "30 IF A <= B THEN 300": PRINT 
  424. 8135  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  425. 8136  VTAB 10
  426. 8140  PRINT "NOTE:- SOME SYSTEMS (INCLUDING APPLE)   ALLOW A STATEMENT INSTEAD OF A LINE     NUMBER AFTER THE ";
  427. 8141  INVERSE : PRINT "THEN";: NORMAL : PRINT " E.G.": PRINT 
  428. 8142  PRINT 
  429. 8150  PRINT "10 IF A = B THEN PRINT "; CHR$(34);"NUMBERS EQUAL"; CHR$(34)
  430. 8160  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  431. 8170  RETURN 
  432. 8200  REM 
  433. 8210  TEXT : HOME 
  434. 8219  PRINT  TAB( 10);
  435. 8220  INVERSE : PRINT "THE INPUT STATEMENT"
  436. 8230  PRINT "(INTERACTIVE/CONVERSATIONAL PROGRAMMING)"
  437. 8240  NORMAL 
  438. 8241  POKE 34,2: HOME 
  439. 8242  PRINT 
  440. 8250  PRINT "SOMETIMES PROGRAMS ARE REQUIRED WHICH   CAN ACCEPT DIFFERENT DATA ON DIFFERENT  OCCASIONS. THE DATA MAY NOT BE AVAILABLEWHEN THE PROGRAM IS BEING WRITTEN. USING'READ/DATA' STATEMENTS ON OCCASIONS LIKETHIS CAN BE AWKWARD."
  441. 8255  PRINT 
  442. 8260  PRINT "FORTUNATELY WE HAVE AN ALTERNATIVE IN   THE ";: INVERSE : PRINT "INPUT";: NORMAL : PRINT " STATEMENT.";
  443. 8270  PRINT " WITH THIS STATEMENTTHE DATA ITEMS ARE ENTERED AT THE       KEYBOARD WHEN THE PROGRAM IS BEING ";: INVERSE : PRINT "RUN";: NORMAL : PRINT "."
  444. 8275  PRINT 
  445. 8280  PRINT "THIS IS IN RESPONSE TO QUESTIONS PUT TO THE USER BY THE COMPUTER. EACH TIME THE USER ANSWERS THE QUESTION OR PROVIDES   DATA, THE COMPUTER EITHER ASKS FOR MORE OR REPLIES WITH RESULTS UNTIL THE       PROGRAM IS FINISHED."
  446. 8290  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  447. 8300  TEXT : HOME : GOSUB 800
  448. 8310  PRINT : POKE 34, PEEK(37): HOME 
  449. 8320  PRINT "HERE WE HAVE FURTHER AMENDED THE HOURLY PAY PROGRAM FOR INTERACTION. NOTE THAT  THE DATA ITEMS ARE NOT NEEDED WITHIN THEPROGRAM AS THEY ARE PROVIDED WHEN IT IS BEING EXECUTED."
  450. 8325  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  451. 8330  PRINT "WE HAVE DOCUMENTED THE PROGRAM FOR THE  USER WITH EXTRA MESSAGES BEING OUTPUT."
  452. 8340  INVERSE : PRINT "INPUT";: NORMAL : PRINT " MAY INCORPORATE MESSAGES IN DOUBLEQUOTES,FOLLOWED BY A SEMI-COLON AND THENTHE VARIABLE(S),WITH COMMAS AS          SEPARATORS."
  453. 8345  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  454. 8350  INVERSE : PRINT "INPUT";: NORMAL : PRINT " MAY BE USED WITHOUT ANY MESSAGE   INCORPORATED, BUT IF SO THEN APPROPRIATEMESSAGES SHOULD BE OUTPUT IN SEPARATE "
  455. 8360  INVERSE : PRINT "PRINT";: NORMAL : PRINT " STATEMENTS."
  456. 8361  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  457. 8362  PRINT : INVERSE : PRINT "EXAMPLES": NORMAL : PRINT 
  458. 8364  PRINT "10 PRINT " CHR$(34)"ENTER NO." CHR$(34)";": PRINT "20 INPUT A": PRINT 
  459. 8366  PRINT "50 PRINT " CHR$(34)"ENTER TWO NOS." CHR$(34)";": PRINT "60 INPUT B,C": PRINT 
  460. 8368  PRINT "NOTE:- NO SEMI-COLONS IN 'INPUT'        STATEMENTS WITHOUT COMMENTS,  COMMAS AS SEPARATORS ONLY."
  461. 8370  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  462. 8380  PRINT "NOTE THAT PROGRAMS SHOULD ALWAYS BE     DESIGNED FOR THE ";: INVERSE : PRINT "USER";: NORMAL 
  463. 8390  PRINT " WHO MAY NEITHER   KNOW HOW TO PROGRAM, NOR KNOW WHAT HE ISREQUIRED TO DO WHILE HE IS RUNNING THE  PROGRAM."
  464. 8395  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  465. 8400  PRINT "THE USER SHOULD NOT HAVE TO REFER TO THEPROGRAMMER TO FIND OUT WHAT IS REQUIRED.THE PROGRAM SHOULD BE ADEQUATELY"
  466. 8410  INVERSE : PRINT "DOCUMENTED";: NORMAL : PRINT " AND BE INTELLIGIBLE TO THE   USER."
  467. 8415  PRINT 
  468. 8420  PRINT "PROGRAM OUTPUT SHOULD ALSO BE READABLE. TO THIS END BLANK LINES MAY BE OUTPUT BYUSING ";: INVERSE : PRINT "PRINT";: NORMAL : PRINT " STATEMENTS ON THEIR OWN, AS IN LINE 41 ABOVE."
  469. 8430  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  470. 8440  INVERSE : PRINT "RUN";: NORMAL 
  471. 8445 W = 11
  472. 8450  PRINT  TAB( W);"ENTER -1 TO TERMINATE PROGRAM"
  473. 8460  PRINT  TAB( W);"ENTER HOURS ";: INVERSE : PRINT "40";: NORMAL : PRINT " (ENTERED)"
  474. 8468  PRINT "PRODUCES";
  475. 8470  PRINT  TAB( W);"ENTER RATE ";: INVERSE : PRINT "5";: NORMAL : PRINT " (ENTERED)
  476. 8480  PRINT  TAB( W);"PAY EQUALS 200"
  477. 8485  PRINT "THIS =>"
  478. 8490  PRINT  TAB( W);"ENTER HOURS ";: INVERSE : PRINT "50";: NORMAL : PRINT " (ENTERED)"
  479. 8498  PRINT "OUTPUT";
  480. 8500  PRINT  TAB( W);"ENTER RATE ";: INVERSE : PRINT "6";: NORMAL : PRINT " (ENTERED)"
  481. 8510  PRINT  TAB( W);"PAY EQUALS 300"
  482. 8515  PRINT 
  483. 8520  PRINT  TAB( W);"ENTER HOURS ";: INVERSE : PRINT "-1";: NORMAL : PRINT " (ENTERED)"
  484. 8525  PRINT : PRINT  TAB( W);"]";: FLASH : PRINT " ": NORMAL 
  485. 8530  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  486. 8540  RETURN 
  487. 8600  REM 
  488. 8610  TEXT : HOME 
  489. 8615  PRINT  TAB( 11);
  490. 8620  INVERSE : PRINT "THE REM STATEMENT": NORMAL 
  491. 8625  PRINT 
  492. 8626  POKE 34,2: HOME 
  493. 8630  PRINT "NOT ONLY SHOULD PROGRAMS BE DOCUMENTED  FOR THE ";: INVERSE : PRINT "USER";: NORMAL : PRINT " BUT ALSO THEY SHOULD BE    DOCUMENTED FOR ANY PROGRAMMER (INCLUDINGTHE PROGRAM WRITER HIMSELF).": PRINT 
  494. 8640  PRINT "EVEN EXPERIENCED PROGRAMMERS FIND THAT  PROGRAMS ARE DIFFICULT TO FOLLOW AND/OR AMEND UNLESS THEY ARE WELL DOCUMENTED   (INCLUDING PROGRAMS THEY HAVE WRITTEN   THEMSELVES)."
  495. 8645  PRINT 
  496. 8650  INVERSE : PRINT "REM";: NORMAL 
  497. 8660  PRINT " STATEMENTS SHOULD BE INCLUDED IN    PROGRAMS AT THE BEGINNING OF 'ROUTINES' AND WHEREVER THE FUNCTION PERFORMED BY  A SECTION OF PROGRAM IS UNCLEAR. THESE  STATEMENTS HAVE NO EFFECT ON THE RUNNINGOF A PROGRAM AT ALL. ";
  498. 8670  PRINT "THEY ARE MERELY    USED AS AN AID TO THE PROGRAMMER TO     UNDERSTAND WHAT IS HAPPENING IN THE     PROGRAM."
  499. 8680  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  500. 8690  PRINT "SYNTAX:"
  501. 8700  PRINT "======="
  502. 8705  PRINT 
  503. 8710  PRINT "<LINENUMBER>";: INVERSE : PRINT "REM";: NORMAL : PRINT "<ANY EXPLANATORY TEXT>"
  504. 8715  PRINT 
  505. 8720  PRINT "N.B. NO QUOTES NEEDED AFTER ";: INVERSE : PRINT "REM";: NORMAL : PRINT "."
  506. 8725  PRINT 
  507. 8730  PRINT "ANY TEXT (INCLUDING STATEMENTS) AFTER": INVERSE : PRINT "REM";: NORMAL : PRINT " ON THE SAME STATEMENT LINE WILL": PRINT "MERELY BE LISTED. THEY WILL HAVE NO": PRINT "EFFECT ON THE RUNNING OF THE PROGRAM."
  508. 8735  PRINT 
  509. 8740  INVERSE : PRINT "EXAMPLES": NORMAL : PRINT 
  510. 8750  PRINT "10 REM WAGES PROGRAM"
  511. 8755  PRINT 
  512. 8760  PRINT "200 REM CALCULATE DEDUCTIONS"
  513. 8765  PRINT 
  514. 8770  PRINT "300 REM SORT NAMES ALPHABETICALLY"
  515. 8780  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  516. 8790  TEXT : HOME 
  517. 8795  PRINT  TAB( 11);
  518. 8800  INVERSE : PRINT "THE STOP STATEMENT": NORMAL : PRINT 
  519. 8810  INVERSE : PRINT "END";: NORMAL 
  520. 8820  PRINT " IS NORMALLY USED AS THE VERY LAST   STATEMENT IN A PROGRAM. IF THERE IS A   REASON FOR STOPPING A PROGRAM AT ANY    OTHER POINT A ";: INVERSE : PRINT "STOP";: NORMAL : PRINT " STATEMENT MAY BE USED."
  521. 8825  PRINT 
  522. 8830  PRINT "THE COMPUTER MAY THEN BE USED IN DIRECT MODE, E.G. TO EXAMINE CURRENT VALUES OF VARIABLES, ETC."
  523. 8835  PRINT 
  524. 8840  INVERSE : PRINT "EXAMPLE": NORMAL 
  525. 8850  PRINT "PRINT X      (NO LINE NUMBER)"
  526. 8860  PRINT "5            (IF X=5 JUST THEN)"
  527. 8865  PRINT : PRINT 
  528. 8870  PRINT "A PROGRAM MAY BE CONTINUED AFTER AN     INTERRUPTION (IF APPROPRIATE) BY TYPING THE DIRECT COMMAND ";: INVERSE : PRINT "CONT";: NORMAL 
  529. 8880  PRINT ", PROVIDED THAT  THE PROGRAM ITSELF HAS NOT BEEN CHANGED,OR AN ERROR ENCOUNTERED."
  530. 8890  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  531. 8995  PRINT  TAB( 9);
  532. 9000  INVERSE : PRINT "THE RESTORE STATEMENT": NORMAL 
  533. 9010  VTAB 8
  534. 9020  PRINT "IF THERE IS ANY REASON FOR RE-SETTING   THE DATA POINTER TO THE BEGINNING OF THEDATA LIST IN A PROGRAM USING ";: INVERSE : PRINT "READ/DATA": NORMAL 
  535. 9030  PRINT "STATEMENTS, ALL THAT IS REQUIRED IS A": INVERSE : PRINT "RESTORE";: NORMAL : PRINT " STATEMENT."
  536. 9035  PRINT : PRINT 
  537. 9040  INVERSE : PRINT "SYNTAX": NORMAL 
  538. 9050  PRINT "<LINENUMBER>";: INVERSE : PRINT "RESTORE";: NORMAL 
  539. 9051  PRINT : PRINT 
  540. 9055  PRINT : INVERSE : PRINT "EXAMPLE";: NORMAL : PRINT 
  541. 9060  PRINT "100 RESTORE"
  542. 9070  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  543. 9080  RETURN 
  544. 9100  REM 
  545. 9110  TEXT : HOME 
  546. 9115  PRINT  TAB( 6);
  547. 9120  INVERSE : PRINT "MORE ABOUT THE PRINT STATEMENT": NORMAL 
  548. 9125  PRINT 
  549. 9130  INVERSE : PRINT "PRINT";: NORMAL : PRINT " MAY BE USED AS IN THE FOLLOWING:"
  550. 9135  PRINT 
  551. 9140  INVERSE : PRINT "MESSAGES";: NORMAL 
  552. 9142 W = 13
  553. 9145  PRINT  TAB( W);"10 PRINT " CHR$(34)"THIS IS A MESSAGE" CHR$(34)
  554. 9150  INVERSE : PRINT "VARIABLES";: NORMAL 
  555. 9155  PRINT  TAB( W);"20 PRINT A,B3;C6"
  556. 9159  PRINT 
  557. 9160  INVERSE : PRINT "EXPRESSIONS";: NORMAL 
  558. 9165  PRINT  TAB( W);"30 PRINT A*(B-C)^D"
  559. 9169  PRINT 
  560. 9170  PRINT "ALTERNATIVELY, ANY COMBINATION OF THE   ABOVE MAY BE USED."
  561. 9175  PRINT : POKE 34, PEEK(37): HOME 
  562. 9176  PRINT 
  563. 9180  PRINT "FROM THE USER POINT OF VIEW OUTPUT      SHOULD BE READABLE. MESSAGES WITHIN     DOUBLE QUOTES IN PRINT STATEMENTS WILL  ALWAYS BE PRINTED ";: INVERSE : PRINT "AS THEY ARE";: NORMAL : PRINT ", SPACES   INCLUDED.";
  564. 9190  PRINT " SO IF YOU WISH TO HAVE SPACES IN YOUR OUTPUT, BE SURE TO ALLOW FOR    THEM IN YOUR PRINT STATEMENTS."
  565. 9200  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  566. 9210  INVERSE : PRINT "TERMINATOR/DELIMITERS IN PRINT": NORMAL 
  567. 9215  PRINT : POKE 34, PEEK(37): HOME 
  568. 9220  INVERSE : PRINT "PRINT";: NORMAL : PRINT " ON ITS OWN FORCES NEXT OUTPUT TO ANEW LINE, I.E. A BLANK LINE IS USUALLY  OUTPUT, UNLESS THE CURRENT LINE IS      UNFINISHED."
  569. 9225  PRINT 
  570. 9230  PRINT "NO TERMINATOR IN A PRINT STATEMENT, AS  IN EXAMPLES ABOVE, MEANS NEXT OUTPUT    WILL BE ON A NEW LINE."
  571. 9240  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  572. 9250  PRINT "A SEMI-COLON ";: INVERSE : PRINT ";";: NORMAL : PRINT " MEANS THE NEXT ITEM TO BEOUTPUT WILL BE PRINTED IN THE NEXT      AVAILABLE POSITION, AS IN LINE 20 ABOVE (C6)."
  573. 9255  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  574. 9260  PRINT "A COMMA ";: INVERSE : PRINT ",";: NORMAL 
  575. 9262  PRINT " MEANS THAT THE NEXT ITEM TO BEOUTPUT WILL BE PRINTED IN THE NEXT FIELD(ZONE) AVAILABLE. THE APPLE SCREEN IS   DIVIDED INTO 3 FIELDS OF 16, 16, AND 8  COLUMNS RESPECTIVELY. THE ITEM WILL BE  OUTPUT STARTING IN THE LEFT OF FIELD."
  576. 9270  PRINT "B3 IN LINE 20 ABOVE WILL START IN COL.17";
  577. 9280  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  578. 9290  POKE 34,2: HOME 
  579. 9300  INVERSE : PRINT "EXAMPLES";: NORMAL : PRINT 
  580. 9310  PRINT "ASSUMING THAT A=4, B=5, AND C=6 THE     OUTPUT FOR THE FOLLOWING WILL BE AS     SHOWN:": PRINT 
  581. 9311 A = 4:B = 5:C = 6
  582. 9315  PRINT 
  583. 9320  PRINT "10 PRINT A,B,C        GIVES OUTPUT:": PRINT A,B,C
  584. 9325  PRINT : PRINT 
  585. 9330  PRINT "20 PRINT A;B;C        GIVES OUTPUT:": PRINT A;B;C
  586. 9335  PRINT : PRINT 
  587. 9340  PRINT "30 PRINT A,B;C        GIVES OUTPUT:": PRINT A,B;C
  588. 9341  PRINT 
  589. 9345  INVERSE : PRINT "NOTE";: NORMAL : PRINT ":- SOME SYSTEMS WILL OUTPUT A SPACE BEFORE/AFTER NUMBERS, BUT NOT APPLE."
  590. 9350  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  591. 9360  PRINT "WHERE THE FIELDS ARE UNSUITABLE FOR     OUTPUT THE ";: INVERSE : PRINT "TAB";: NORMAL : PRINT " FUNCTION MAY BE USED FOR MORE FLEXIBLE LAYOUT."
  592. 9365  PRINT 
  593. 9370  PRINT "THE USER CAN ARRANGE THAT OUTPUT BE     PRINTED IN ANY DESIRED COLUMN 1-40      ACROSS THE SCREEN."
  594. 9375  PRINT 
  595. 9380  INVERSE : PRINT "EXAMPLE": NORMAL 
  596. 9390  PRINT "10 PRINT TAB(12);A;TAB(20);B;TAB(30);C"
  597. 9395  PRINT : PRINT "PRODUCES OUTPUT FOR 'A' STARTING IN     COLUMN 12, 'B' IN COLUMN 20, AND 'C' IN COLUMN 30, AS FOLLOWS:": PRINT 
  598. 9400  PRINT  TAB( 12);A; TAB( 20);B; TAB( 30);C
  599. 9405  PRINT 
  600. 9410  PRINT "NOTE THAT THIS FUNCTION MAY ONLY BE USEDIN PRINT STATEMENTS, AND A SEMI-COLON   MUST IMMEDIATELY FOLLOW IT."
  601. 9420  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  602. 9430  RETURN 
  603. 9500  REM 
  604. 9510  TEXT : HOME 
  605. 9515  PRINT  TAB( 9);
  606. 9520  INVERSE : PRINT "MATHEMATICAL FUNCTIONS": NORMAL 
  607. 9525  PRINT : POKE 34, PEEK(37): HOME : VTAB 5
  608. 9530  PRINT "THE FUNCTIONS TO FOLLOW MAY BE USED IN  ASSIGNING THEM TO VARIABLES, THEY MAY BEUSED DIRECTLY IN PRINT STATEMENTS, OR   IN EXPRESSIONS."
  609. 9534  PRINT : PRINT 
  610. 9535  INVERSE : PRINT "EXAMPLES": NORMAL : PRINT 
  611. 9540  PRINT "LET A=INT(X),  OR  PRINT INT(X)": PRINT : PRINT "(PROVIDED X ALREADY HAS A VALUE)"
  612. 9545  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  613. 9550  INVERSE : PRINT "RND(1)";: NORMAL : PRINT " GENERATES A RANDOM NUMBER BETWEEN0 AND 0.999999999": PRINT 
  614. 9560  INVERSE : PRINT "INT(X)";: NORMAL : PRINT " GENERATES THE LARGEST WHOLE      NUMBER LESS THAN OR EQUAL TO X": PRINT 
  615. 9570  INVERSE : PRINT "SGN(X)";: NORMAL : PRINT " WILL PRODUCE +1 FOR POSITIVE     NUMBERS, -1 FOR NEGATIVE NUMBERS, AND 0 FOR ZERO": PRINT 
  616. 9580  INVERSE : PRINT "ABS(X)";: NORMAL : PRINT " WILL PRODUCE THE VALUE OF X,     IGNORING THE SIGN": PRINT 
  617. 9590  INVERSE : PRINT "SQR(X)";: NORMAL : PRINT " WILL PRODUCE THE SQUARE ROOT OF X"
  618. 9595  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  619. 9600  INVERSE : PRINT "LOG(X)";: NORMAL : PRINT " WILL PRODUCE THE NATURAL LOG OF X(TO BASE E)": PRINT 
  620. 9610  INVERSE : PRINT "EXP(X)";: NORMAL : PRINT " WILL PRODUCE THE NATURAL ANTI-LOGOF X (TO BASE E)": PRINT 
  621. 9620  INVERSE : PRINT "SIN(X)";: NORMAL : PRINT " WILL PRODUCE THE SINE OF X       (RADIANS)": PRINT 
  622. 9630  INVERSE : PRINT "COS(X)";: NORMAL : PRINT " WILL PRODUCE THE COSINE OF X     (RADIANS)": PRINT 
  623. 9640  INVERSE : PRINT "TAN(X)";: NORMAL : PRINT " WILL PRODUCE THE TANGENT OF X    (RADIANS)": PRINT 
  624. 9650  INVERSE : PRINT "ATN(X)";: NORMAL : PRINT " WILL PRODUCE THE ARCTANGENT OF X (RADIANS)": PRINT 
  625. 9660  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  626. 9670  TEXT : HOME 
  627. 9675  PRINT  TAB( 10);
  628. 9680  INVERSE : PRINT "TRUNCATING/ROUNDING": NORMAL 
  629. 9690  PRINT : POKE 34, PEEK(37): HOME 
  630. 9700  PRINT "WE WILL CONSIDER 4 TYPES:"
  631. 9705  PRINT : PRINT 
  632. 9710  PRINT "1.ROUNDING DOWN, E.G. 6.4 => 6                           AND  6.5 => 6": PRINT 
  633. 9715  PRINT 
  634. 9720  PRINT "2.ROUNDING OFF, E.G. 6.4 => 6                           BUT  6.5 => 7": PRINT 
  635. 9725  PRINT 
  636. 9730  PRINT "3.ROUNDING UP, E.G. 6.4 => 7                           AND  6.5 => 7": PRINT 
  637. 9735  PRINT 
  638. 9740  PRINT "4.ROUNDING OFF TO 2 DECIMAL PLACES": PRINT : PRINT  TAB( 17);"E.G. 6.454 => 6.45": PRINT  TAB( 22);"6.455 => 6.46"
  639. 9750  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  640. 9760  PRINT "FURTHER DETAILS:": PRINT : POKE 34, PEEK(37): HOME 
  641. 9770  PRINT "ROUNDING DOWN": PRINT "============="
  642. 9772  PRINT "USED E.G. WHEN CALCULATING THE NUMBER OFCOMPLETE ARTICLES THAT CAN BE PRODUCED  FROM A GIVEN VOLUME OF RAW MATERIALS -  IN THIS CASE ALWAYS ROUND DOWN."
  643. 9773  PRINT : PRINT 
  644. 9774  PRINT "USE INT FUNCTION,E.G.": PRINT : PRINT "INT(6.4)=6 AND INT(6.5)=6"
  645. 9775  PRINT : PRINT 
  646. 9776  FLASH : PRINT "WARNING";: NORMAL : PRINT "  INT(-6.4)=-7"
  647. 9780  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  648. 9790  PRINT "ROUNDING OFF": PRINT "============"
  649. 9792  PRINT "AS IN NORMAL MATHEMATICAL CALCULATIONS. IF DIGIT AFTER DECIMAL POINT IS LESS    THAN 0.5, THEN IGNORE, OTHERWISE        INCREASE PREVIOUS POSITION BY 1."
  650. 9793  PRINT 
  651. 9794  PRINT : PRINT "PROGRAMMING: HAVING INCREASED THE NUMBERBY 0.5, USE THE 'INT' FUNCTION ON IT,   E.G.": PRINT 
  652. 9795  PRINT 
  653. 9796  PRINT "INT(X+0.5)": PRINT : PRINT "INT(6.4+0.5)=6": PRINT : PRINT "INT(6.5+0.5)=7"
  654. 9800  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  655. 9810  PRINT "ROUNDING UP": PRINT "==========="
  656. 9812  PRINT "AS IN PAINTING/DECORATING TYPE PROBLEMS.IF WE WOULD USE 6.1 ROLLS OF WALLPAPER  WE MUST BUY 7 ROLLS.": PRINT 
  657. 9814  PRINT : PRINT "PROGRAMMING: HAVING INCREASED THE NUMBERBY ONE, USE THE 'INT' FUNCTION ON IT,   E.G.": PRINT 
  658. 9816  PRINT "INT(X+1)": PRINT : PRINT "INT(6.1+1)=7": PRINT : PRINT "INT(6.9+1)=7"
  659. 9818  PRINT : PRINT "PROBLEM:- WHAT HAPPENS IF THE ORIGINAL  VALUE IS AN INTEGER ?"
  660. 9820  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  661. 9830  PRINT "ROUNDING OFF TO 2 DECIMAL PLACES": PRINT "================================"
  662. 9832  PRINT "AS IS DONE IN MONEY PROBLEMS": PRINT : PRINT 
  663. 9834  PRINT "IN PROGRAMMING, MULTIPLY BY 100, THEN   ROUND OFF BY ADDING 0.5 AND USING THE   INT FUNCTION, AND FINALLY DIVIDE THE    RESULT BY 100, E.G.": PRINT 
  664. 9836  PRINT "(INT(X*100+0.5))/100": PRINT : PRINT "(INT(12.344*100+0.5))/100=12.34": PRINT : PRINT "(INT(12.345*100+0.5))/100=12.35"
  665. 9838  PRINT : PRINT "PROBLEM:- HOW TO ROUND OFF TO ANY       REQUIRED NUMBER OF DECIMAL PLACES."
  666. 9840  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  667. 9850  TEXT : HOME 
  668. 9852  PRINT  TAB( 3);
  669. 9855  INVERSE : PRINT "FURTHER EXAMPLES OF MATH FUNCTIONS": NORMAL 
  670. 9856  PRINT : PRINT 
  671. 9860  PRINT "PRINT INT(6*RND(1))+1  => PRODUCES A    RANDOM NUMBER BETWEEN 1 AND 6": PRINT : PRINT 
  672. 9865  PRINT "PRINT INT(RND(1)*(B-A+1)+A) => PRODUCES A RANDOM NUMBER BETWEEN 'A' AND 'B'     (INCLUSIVE)": PRINT : PRINT 
  673. 9870  PRINT "PRINT SGN(X)*INT(ABS(X))  => PRODUCES   -6 FOR X=-6.3": PRINT : PRINT 
  674. 9875  PRINT "PRINT SQR(9)  => PRODUCES RESULT OF 3": PRINT : PRINT 
  675. 9880  PRINT "FURTHER EXERCISES ARE LEFT TO THE USER"
  676. 9890  GOSUB 900: IF Z9$ =  CHR$(27)  THEN  RETURN 
  677. 9895  RETURN 
  678. 9900  REM 
  679. 62000  RESUME 
  680. 63000  TEXT : HOME : VTAB 10
  681. 63010  INVERSE : PRINT "PLEASE WAIT!!": PRINT : PRINT 
  682. 63020  INVERSE : PRINT "RE-LOADING MENU PROGRAM !!": NORMAL 
  683. 63045  POKE 1010,P0: POKE 1011,P1: POKE 1012,P2
  684. 63050  PRINT D$"RUNSTARTUP"